package com.example.d4_homework.homework02;

import java.util.Random;
import java.util.function.Supplier;

public class Test {
    // 验证码可选字符
    private static final String OPTIONS_CAHS = "023456789abcdefghjklmnopqrstuvwxyz";

    public static void main(String[] args) {
        /*
        1.Supplier<T>是一个生产类型接口,该接口的方法T get();是需要在方法内部生产一个T类型的对象返回
        2.verificationCode方法参数Supplier<String>说明如下所示：
        3.生成验证码的字符可以从OPTIONS_CAHS中获取
        4.调用verificationCode方法获取一个4位的随机验证码
         */
        // 使用Lambda表达式简化
        String verificationCode = verificationCode(() -> {
            Random r = new Random();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < 4; i++) {
                // 根据字符串的长度生成的随机数刚好可以和字符串的下标一一对应
                int index = r.nextInt(OPTIONS_CAHS.length());
                sb.append(OPTIONS_CAHS.charAt(index));
            }
            return sb.toString();
        });

        // 输出
        System.out.println("本次生成的验证码为：" + verificationCode);
    }

    // 调用该方法生成一个4位的随机验证码
    public static String verificationCode(Supplier<String> supplier) {
        return supplier.get();
    }
}
